iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
DevOps

建立應用程式 UI 自動化測試 - 以 Robot Framework 為例系列 第 10

[10] Robot Framework 結合 Playwright 進行 Web 自動化測試 - 認識 Playwright

  • 分享至 

  • xImage
  •  

在這個章節,我們即將進入 Web 自動化測試的領域。前面提到的許多基礎概念可能讓人感到有些複枯燥乏味,大家別被嚇跑了呀!從這一節開始,我們將實際操作,體驗 Web 自動化的魅力。當你看到 UI 自動化測試順利執行時,相信會感到非常有成就感。那麼,讓我們繼續往下看吧!

什麼是 Playwright

雖然剛剛說要動手來體驗一下 UI 自動化的魅力,但是不免俗的還是有必要補充一些基礎概念。選擇一款工具前,我們需要了解其背後的原理,這樣才能知其然,也知其所以然。

Playwright 是由 Microsoft 開發的一款現代化開源自動化測試工具,其目的在提供穩定且誇平台誇瀏覽器的端對端測試能力,它支援多種瀏覽器,包括 Chromium(如 Google Chrome 和 Microsoft Edge)、WebKit(如 Safari)和 Firefox,並且可以在 Windows、macOS 和 Linux 上執行測試。除了支援 JavaScript/TypeScript 之外,Playwright 也支援 Python、C# 和 Java,不過由於我們是這個系列是 Robot Framework 的全應用,因此這邊也是來跟大家分享該如何透過 Robot Framework 搭配 Playwright 執行測試吧!

Playwright 的特點

  1. 跨瀏覽器測試:Playwright 支援 Chromium、WebKit 和 Firefox 瀏覽器,開發者可以在不同瀏覽器之間無縫切換測試,確保應用程式在各大主流瀏覽器中的一致性
  2. 無頭模式與有頭模式:Playwright 支援無頭(Headless)模式和有頭(Headful)模式,可以靈活選擇在背景執行測試或可視化進行測試
  3. 自動等待:Playwright 內建了智能等待機制,它會自動等待元素可見、可操作或事件發生後才繼續執行,這減少了手動編寫等待邏輯的需求
  4. 支援多種語言:除了主要支援的 JavaScript/TypeScript 之外,Playwright 還支援 Python、C# 和 Java,適合多種開發環境
  5. 網絡擷取與模擬:Playwright 提供了強大的網絡攔截和模擬功能,可以模擬網絡條件、改寫請求或進行斷點測試,這對於測試 API 和處理異常情況非常有幫助
  6. 執行速度快:相較於過去大多數人使用的 Selenium,Playwright 在背後與瀏覽器溝通的方式相較於 Selenium 來的更快,這也是許多人放棄 Selenium 選擇 Playwright 的原因

Playwright 與 Selenium 的比較

Selenium 是一個經典的網頁自動化測試工具,在 Playwright 發表之前,如果要撰寫網頁的自動化測試,會找到一堆 Selenium 的文章,就連 Playwright 誕生這麼多年至今,網路上仍然會有那種為什麼我們應該棄用 Playwright 回歸 Selenium 的文章,當然兩者之間各有優勢和適用場景,以下是透過表格比較 Playwright 和 Selenium 的一些關鍵特點:

工具/功能 Playwright Selenium
支援的瀏覽器 幾乎所有主流瀏覽器 幾乎所有主流瀏覽器
自動等待 是,內建智能等待機制 否,需要手動編寫顯式等待或隱式等待
瀏覽器引擎 提供原生支援,直接控制瀏覽器,走 WebSocket 透過 WebDriver 通訊協定間接控制瀏覽器,除了需要維護 WebDriver 外,http 的溝通方式相較 WebSocket 慢
網絡攔截與模擬 是,支援攔截和模擬 有限,需使用外部工具或額外配置
功能豐富程度 提供多種操作,甚至是 Alert 監聽及文件上傳下載 提供較基礎的功能
測試隔離

根據上表可以看出,Playwright 在許多方面已經超越了 Selenium,這也是它逐漸成為科技公司新寵的原因。隨著時間的推移,Playwright 的社群預計會更加活躍。透過下圖的 npm 下載量統計,我們可以發現,近幾年來 Playwright 的下載量已經超越了 Selenium。這顯示 Web 自動化測試工具的必學清單正在悄然發生變化。雖然目前仍有許多公司在使用 Selenium,但相信未來使用 Playwright 的用戶會越來越多。

有趣的是,從 npm 的下載量統計中可以看到,每年都有一段時間下載量出現下滑,這個時間點通常是聖誕節假期,許多公司都開始放假啦!
https://ithelp.ithome.com.tw/upload/images/20240919/20168859XtSeT3x0c0.png

Playwright 和 Selenium 的運作原理

下圖中,我們可以看到 Playwright 和 Selenium 的比較,很明顯可以發現 Selenium 的操作步驟比 Playwright 還多。這是因為兩者與瀏覽器互動的方式不同。
https://ithelp.ithome.com.tw/upload/images/20240919/20168859t8hm8fJPdm.png

在前面的比較中我們提到,Playwright 不需要維護 WebDriver,這也是它的一大優勢。

  • Playwright:Playwright 通過與瀏覽器的原生接口(而不是通過 WebDriver)直接與瀏覽器溝通。它將程式碼轉換成 JSON 格式,然後通過 WebSocket 協定傳送到瀏覽器。這與 Selenium 不同,Selenium 每次請求都需要等待 Response,這使得 Selenium 的操作更加耗時。
  • Selenium:Selenium 透過 WebDriver 與瀏覽器溝通,每個瀏覽器都有對應的 WebDriver。溝通方式是通過 HTTP 請求傳送,並且需要等待 Response JSON 的接收。在這段一來一回的溝通中,時間成本相對較高。

不管最終選擇哪套工具,目的都是一樣的,就是透過技術的手段來確保品質,因此最終選擇哪種工具,只要深思後認為值得投入都是沒問題的,畢竟沒有最好的工具,只有最適合的。

結語

在自動化測試的領域,選擇合適的工具至關重要。Playwright 以其出色的性能、跨平台支持和豐富的功能,正在迅速成為新一代自動化測試的首選工具。雖然 Selenium 仍然是一個強大的選擇,但隨著技術的進步和需求的變化,越來越多的開發者和企業開始轉向 Playwright。無論是對於初學者還是有經驗的測試工程師,掌握這款工具都將帶來更多的機會和挑戰。希望透過這一章節的介紹,能讓你對 Playwright 有更深入的了解,並在未來的自動化測試中得心應手。


上一篇
[9] Robot Framework 監聽器 (Listeners)
下一篇
[11] 使用 Robot Framework 結合 Playwright 進行 Web 自動化測試 - Playwright 環境設定
系列文
建立應用程式 UI 自動化測試 - 以 Robot Framework 為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言